home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / TCP_IP / TNOS230S / MKCONFIG.TCL < prev    next >
Text File  |  1997-09-14  |  6KB  |  287 lines

  1. #!/usr/local/bin/tclsh
  2.  
  3. set NOSDIR "/nos"
  4.  
  5. set RELEASE "2.30"
  6. set TAB1 16
  7. set TAB2 8
  8. set AUTONOSDIR 0
  9.  
  10. proc getdir {} {
  11.     global AUTOMATIC NOSDIR
  12.     if {$AUTOMATIC != 1} {
  13.         set prompt "Use default installation directory of $NOSDIR (Y/n) ?"
  14.         if {[info tclversion] > "7.4"} {
  15.             puts "$prompt"
  16.         } else {
  17.             puts -nonewline "$prompt"
  18.         }
  19.         set ans [gets stdin]
  20.         if {$ans != "y" && $ans != ""} {
  21.             puts "Enter new installation base directory:"
  22.             set NOSDIR [gets stdin]
  23.         }
  24.     }
  25. }
  26. proc tabit {flag {size 0}} {
  27.     global fdh TAB1
  28.     if {$size == 0} {
  29.         set size $TAB1
  30.     }
  31.     set num [expr "($size - [string length $flag] + 7) / 8"]
  32.     for {set cnt 0} {$cnt < $num} {incr cnt} {
  33.         puts -nonewline $fdh "\t"
  34.     }
  35. }
  36. proc doindent {indent} {
  37.     for {set cnt 0} {$cnt < $indent} {incr cnt} {
  38.         puts -nonewline "  "
  39.     }
  40. }
  41. proc setbool {indent description flag value} {
  42.     puts "* $description ($flag) $value"
  43.     bool2 $indent "$description" "$flag" "$value"
  44. }
  45. proc bool2 {indent description flag value} {
  46.     global fdh fdc $flag
  47.     puts $fdc "set $flag $value"
  48.     if {$value == "y"} {
  49.         puts -nonewline $fdh "#define $flag"
  50.     } else {
  51.         puts -nonewline $fdh "#undef  $flag"
  52.     }
  53.     tabit $flag
  54.     if {$value == "y"} {
  55.         puts -nonewline $fdh "1"
  56.     }
  57.     puts $fdh "\t/* $description */"
  58.     global $flag
  59.     set $flag $value
  60. }
  61.  
  62. proc bool {indent description flag {default "y"}} {
  63.     global fdh fdc $flag help
  64.     set choices "Y/n"
  65.     set helpfound 0
  66.     set new ""
  67.     if {[info exists $flag]} {
  68.         set default "[set $flag]"
  69.     } else {
  70.         set new " <NEW>"
  71.     }
  72.     if {$default != "y"} {
  73.         set choices "y/N"
  74.     }
  75.     set done 0
  76.     if [info exists help($flag)] {
  77.         set choices "${choices}/?"
  78.         set helpfound 1
  79.     }
  80.     while {$done == 0} {
  81.         readln $indent "$description ($flag) \[$choices]$new " "$default"
  82.         set ans [string tolower $ans]
  83.         if {$helpfound && $ans == "?"} {
  84.             puts "\n$help($flag)\n"
  85.         } elseif {$ans == "y" || $ans == "n"} {
  86.             set done 1
  87.         } else    {
  88.             puts ">> Enter either 'y' or 'n'....."
  89.         }
  90.     }
  91.     bool2 $indent "$description" "$flag" "$ans"
  92. }
  93.  
  94. proc comment {description} {
  95.     global fdh fdc
  96.     # output to screen
  97.     puts "\n*\n* $description\n*"
  98.     puts $fdc "\n#\n# $description\n#"
  99.     puts $fdh "\n/*\n * $description\n */"
  100. }
  101.  
  102. proc commentstart {description} {
  103.     global fdh fdc
  104.     # output to screen
  105.     puts "\n*\n* $description"
  106.     puts $fdc "\n#\n# $description"
  107.     puts $fdh "\n/*\n * $description"
  108. }
  109.  
  110. proc commentlocal {description} {
  111.     # output to screen
  112.     puts "* $description"
  113. }
  114.  
  115. proc commentmiddle {description} {
  116.     global fdh fdc
  117.     # output to screen
  118.     puts "* $description"
  119.     puts $fdc "# $description"
  120.     puts $fdh " * $description"
  121. }
  122.  
  123. proc commentend {description} {
  124.     global fdh fdc
  125.     # output to screen
  126.     puts "* $description\n*"
  127.     puts $fdc "# $description\n#"
  128.     puts $fdh " * $description\n */"
  129. }
  130.  
  131. proc readln {indent prompt {default ""}} {
  132.     upvar ans ans
  133.     global AUTOMATIC
  134.     doindent $indent
  135.     if {[info tclversion] > "7.4"} {
  136.         puts "$prompt"
  137.     } else {
  138.         puts -nonewline "$prompt"
  139.     }
  140.     if {$AUTOMATIC == 0} {
  141.         set ans [gets stdin]
  142.         if {$ans == ""} {
  143.             set ans $default
  144.         }
  145.     } else {
  146.         set ans $default
  147.         puts "$ans"
  148.     }
  149. }
  150.  
  151. proc number {indent description flag {default ""}} {
  152.     global fdh fdc $flag TAB2
  153.     set prompt "$description ($flag) "
  154.     set new ""
  155.     if {[info exists $flag]} {
  156.         set default "[set $flag]"
  157.     } else {
  158.         set new " <NEW>"
  159.     }
  160.     if {$default != ""} {
  161.         set prompt "${prompt}\[$default] "
  162.     }
  163.     readln $indent "${prompt}${new}" "$default"
  164.     puts $fdc "set ${flag} $ans"
  165.     puts -nonewline $fdh "#define $flag"
  166.     tabit $flag
  167.     puts -nonewline $fdh "$ans"
  168.     tabit $ans $TAB2
  169.     puts $fdh "/* $description */"
  170.     set $flag $ans
  171. }
  172.  
  173. proc label {indent description flag {default ""}} {
  174.     global fdh fdc $flag TAB2
  175.     set prompt "$description ($flag) "
  176.     if {[info exists $flag]} {
  177.         set default "[set $flag]"
  178.     }
  179.     if {$default != ""} {
  180.         set prompt "${prompt} \[$default] "
  181.     }
  182.     readln $indent "$prompt" "$default"
  183.     puts $fdc "set ${flag} $ans"
  184.     puts -nonewline $fdh "#define $flag"
  185.     tabit $flag
  186.     puts -nonewline $fdh "\"$ans\""
  187.     tabit "\"$ans\"" $TAB2
  188.     puts $fdh "/* $description */"
  189.     set $flag $ans
  190. }
  191.  
  192. set AUTOMATIC 0
  193. set FORCEDOS 0
  194. if [info exists argv] {
  195.     set findauto [lsearch $argv auto]
  196.     if {$findauto != -1} {
  197.         set AUTOMATIC 1
  198.         set temp [llength $argv]
  199.         if {($temp - 1) > $findauto}    {
  200.             set AUTOCONFIG [lindex $argv [expr $findauto + 1]]
  201.             puts "Autoconfig using: $AUTOCONFIG"
  202.         }
  203.     }
  204.     if {[lsearch $argv dos] != -1} {
  205.         set FORCEDOS 1
  206.     }
  207. }
  208.  
  209. if [info exists env(NOSDIR)]    {
  210.     set NOSDIR $env(NOSDIR)
  211.     set AUTONOSDIR 1
  212. }
  213.  
  214. if [file exists nosdir]    {
  215.     set fd [open nosdir r]
  216.     set NOSDIR [gets $fd]
  217.     close $fd
  218.     set AUTONOSDIR 1
  219. }
  220.  
  221. if {$AUTONOSDIR != 1}    {
  222.     getdir
  223. }
  224.  
  225. set NOSDIR "[string trimleft [string trimright $NOSDIR " \t\n\r"] " \t\n\r"]"
  226. puts "\nmkconfig.tcl: Using installation directory of: '$NOSDIR'"
  227.  
  228. set CONFIG ${NOSDIR}/etc/config.cfg
  229. set CONFIG_OLD ${NOSDIR}/etc/config.old
  230. set TMPCONFIG tmpconf
  231. set CONFIG_H config.h
  232. set TMPCONFIG_H tmpconf.h
  233. set CONFIG_IN config.in
  234. set CONFIG_HLP config.hlp
  235.  
  236. #
  237. # Open the output files
  238. #
  239. set fdc [open $TMPCONFIG w]
  240. puts $fdc "#\n# Automatically generated config file: don't edit\n#"
  241.  
  242. set fdh [open $TMPCONFIG_H w]
  243. puts $fdh "#ifndef _CONFIG_H\n#define _CONFIG_H\n"
  244. puts $fdh "/*\n * Automatically generated C config file: don't edit\n */"
  245.  
  246. if {[info exists AUTOCONFIG] && [file exists $AUTOCONFIG]}    {
  247.     catch {source $AUTOCONFIG}
  248. } elseif [file exists $CONFIG] {
  249.     catch {source $CONFIG}
  250. }
  251.  
  252. catch {source $CONFIG_HLP}
  253. source $CONFIG_IN
  254.  
  255. if {$FORCEDOS == 1}    {
  256.     set ISUNIX y
  257. }
  258.  
  259. puts $fdc "\n# configuration complete..."
  260. close $fdc
  261. puts $fdh "\n\n#include \"config.chk\"\n\n#endif\t/* _CONFIG_H */"
  262. close $fdh
  263.  
  264. if {[info exists ISUNIX] == 1 && $ISUNIX == "y"} {
  265.     catch {exec mv -f $CONFIG $CONFIG_OLD}
  266.     exec mv -f $TMPCONFIG $CONFIG
  267.     exec mv -f $TMPCONFIG_H $CONFIG_H
  268. } else {
  269.     regsub -all "/" $CONFIG "\\" temp
  270.     set CONFIG "$temp"
  271.     regsub -all "/" $CONFIG_OLD "\\" temp
  272.     set CONFIG_OLD "$temp"
  273.     if [file exists $CONFIG]    {
  274.         catch {exec "copy $CONFIG $CONFIG_OLD"}
  275.     }
  276.     exec "copy $TMPCONFIG $CONFIG"
  277.     if [file exists $CONFIG_H]    {
  278.             catch {exec "del $CONFIG_H"}
  279.     }
  280.         exec "rename $TMPCONFIG_H $CONFIG_H"
  281. }
  282.  
  283. puts " "
  284. puts "The configuration is complete!"
  285. puts "\n"
  286. exit
  287.